/**
 * @Description: 具有公共的js 方法
 * @Param:
 * @return:
 * @Author: Mr.Yan
 * @Date: 2018/9/25
 */

//  重新渲染
function renderForm() {
    layui.use('form', function () {
        var form = layui.form;//高版本建议把括号去掉，有的低版本，需要加()
        form.render();
    });
}

Date.prototype.format = function (format) {
    var o = {
        "M+": this.getMonth() + 1, //month
        "d+": this.getDate(), //day
        "h+": this.getHours(), //hour
        "m+": this.getMinutes(), //minute
        "s+": this.getSeconds(), //second
        "q+": Math.floor((this.getMonth() + 3) / 3), //quarter
        "S": this.getMilliseconds() //millisecond
    }

    if (/(y+)/i.test(format)) {
        format = format.replace(RegExp.$1, (this.getFullYear() + "").substr(4 - RegExp.$1.length));
    }

    for (var k in o) {
        if (new RegExp("(" + k + ")").test(format)) {
            format = format.replace(RegExp.$1, RegExp.$1.length == 1 ? o[k] : ("00" + o[k]).substr(("" + o[k]).length));
        }
    }
    return format;
}

//checkbox互斥事件
function checkbox_Exclusion(p_name) {
    layui.use(['form'], function () {
        var form = layui.form;
        form.on('checkbox(' + p_name + ')', function (data) {
            var _elem = data.elem; // 得到checkbox原始DOM对象
            var _value = data.value; // 得到checkbox原始DOM对象
            var _checked = data.elem.checked; // 是否选中
            var _exclusion_val = _elem.getAttribute("exclusion"); // 获取互斥的选项 / null则不存在互斥，从1开始
            var _obj = document.getElementsByName(p_name);  // 获取多选的对象值
            // 如果选中， 则获取互斥的对象去掉对勾
            if (_checked) {
                //  判断是否存在互斥 存在则进行下面
                if (!isEmpty(_exclusion_val)) {
                    // 判断是否是-1，-1 代表 与其他全部互斥
                    if (_exclusion_val == "-1") {
                        for (var i = 0; i < _obj.length; i++) {
                            if (_obj[i].value != _value) {
                                _obj[i].checked = false;
                            }
                        }
                    } else {
                        _exclusion_val = _exclusion_val.split(",");
                        for (var i = 0; i < _exclusion_val.length; i++) {
                            _obj[_exclusion_val[i] - 1].checked = false;
                        }
                    }
                }
            }
            //----------------------------------下面两个for循环作用剔除不勾选的先隐藏 ， 勾选后显示
            // 循环多选框对象进行需要显示的对象属性
            for (var i = 0; i < _obj.length; i++) {
                var isChecked = _obj[i].checked; // 判断当前对象是否选中
                var showIds = _obj[i].getAttribute("showIds"); // 获取显示的id对象 / null 则不存在显示的对象
                // 不选中则隐藏
                if (!isChecked) {
                    // 判断要显示的id对象  存在则进行下面
                    if (!isEmpty(showIds)) {
                        showIds = showIds.split(","); // 拼接 --> "#id1"
                        for (var j = 0; j < showIds.length; j++) {
                            $("#" + showIds[j]).val("");
                            $("#" + showIds[j]).hide(); //  隐藏
                        }
                    }
                }
            }
            // 循环多选框对象进行需要显示的对象属性
            for (var i = 0; i < _obj.length; i++) {
                var isChecked = _obj[i].checked; // 判断当前对象是否选中
                var showIds = _obj[i].getAttribute("showIds"); // 获取显示的id对象 / null 则不存在显示的对象
                // 不选中则显示
                if (isChecked) {
                    // 判断要显示的id对象  存在则进行下面
                    if (!isEmpty(showIds)) {
                        showIds = showIds.split(","); // 拼接 --> "#id1"
                        for (var j = 0; j < showIds.length; j++) {
                            $("#" + showIds[j]).show(); //  显示
                        }
                    }
                }
            }

            // 循环多选框对象进行需要显示的对象属性
            for (var i = 0; i < _obj.length; i++) {
                var isChecked = _obj[i].checked; // 判断当前对象是否选中
                var setIds = _obj[i].getAttribute("setIds"); // 获取显示的id对象 / null 则不存在显示的对象
                // 不选中则隐藏
                if (isChecked) {
                    // 判断要显示的id对象  存在则进行下面
                    if (!isEmpty(setIds)) {
                        setIds = setIds.split(","); // 拼接 --> "#id1"
                        for (var j = 0; j < setIds.length; j++) {
                            $("#" + setIds[j]).val("");
                        }
                    }
                }
            }

            renderForm();
        })
    })
}

//获取当前时间 YYYY-MM-dd
function getNowFormatDate() {
    var date = new Date();
    var seperator1 = "-";
    var year = date.getFullYear();
    var month = date.getMonth() + 1;
    var dates = date.getDate();
    if (month >= 1 && month <= 9) {
        month = "0" + month;
    }
    if (dates >= 1 && dates <= 9) {
        dates = "0" + dates;
    }
    var currentdate = year + seperator1 + month + seperator1 + dates;
    return currentdate;
}


//  重置
function reload() {
    window.location.reload();
}

var AjaxAction = {
    ajaxBeforLoading: "<div id='ajaxBefor' alert='center' style=\"\n" +
        "    position: fixed;\n" +
        "    text-align: center;\n" +
        "    width: 100%;\n" +
        "    height: 100%;\n" +
        "    display: block;\n" +
        "    background: #000;\n" +
        "    color: #FFFFFF;\n" +
        "    z-index: 99999999;\n" +
        "    opacity: 0.3;\n" +
        "    top: 0;\n" +
        "    left: 0;\n" +
        "    vertical-align: middle;\n" +
        "\">\n" +
        "    <i class=\"fa fa-spinner fa-pulse fa-3x fa-fw\" style=\"\n" +
        "    position: absolute;\n" +
        "    top:" + (((((($(window.top).height()) / 2) ? ((($(window.top).height()) / 2) - 40) : 0))/($(window.top).height()))*100) + "%;\n" +
        "    left:" + ((((($(window.top).width()) / 2) ? ((($(window.top).width()) / 2)- 20) : 0)/($(window.top).width()))*100) + "%;\n" +
        "\"></i>\n" +
        "    \n" +
        "<span style=\"\n" +
        "    position: absolute;\n" +
        "    top:" + (((((($(window.top).height()) / 2) ? ((($(window.top).height()) / 2) + 30) : 0))/($(window.top).height()))*100) + "%;\n" +
        "    left:" + ((((($(window.top).width()) / 2) ? ((($(window.top).width()) / 2)-20) : 0)/($(window.top).width()))*100)  + "%;\n" +
        "\">发送请求中...</span></div>",

    postData: function (Url, JsonData, LodingFun, ReturnFun) {
        $.ajax({
            type: "POST",
            url: Url,
            data: JsonData,
            dataType: 'json',
            async: 'false',
            beforeSend: function () {
                window.top.$("body").append(AjaxAction.ajaxBeforLoading);
                if (typeof(eval(LodingFun)) == "function")
                    LodingFun();
            },
            success: function (data) {
                window.top.$("body #ajaxBefor").remove();
                if (typeof(eval(ReturnFun)) == "function")
                    ReturnFun(data);
            }
        });
    },
    postJson: function (Url, JsonData, LodingFun, ReturnFun) {
        $.ajax({
            type: "post",
            url: Url,
            data: JSON.stringify(JsonData),
            contentType: "application/json;charset=utf-8",
            dataType: 'json',
            async: 'false',
            beforeSend: function () {
                window.top.$("body").append(AjaxAction.ajaxBeforLoading);
                if (typeof(eval(LodingFun)) == "function")
                    LodingFun();
            },
            success: function (data) {
                window.top.$("body #ajaxBefor").remove();
                if (typeof(eval(ReturnFun)) == "function")
                    ReturnFun(data);
            }
        });
    },
    postJsonAsync: function (Url, JsonData, LodingFun, ReturnFun) {
        $.ajax({
            type: "post",
            url: Url,
            data: JSON.stringify(JsonData),
            contentType: "application/json;charset=utf-8",
            dataType: 'json',
            async: true,
            beforeSend: function () {
                window.top.$("body").append(AjaxAction.ajaxBeforLoading);
                if (typeof(eval(LodingFun)) == "function")
                    LodingFun();
            },
            success: function (data) {
                window.top.$("body #ajaxBefor").remove();
                if (typeof(eval(ReturnFun)) == "function")
                    ReturnFun(data);
            }
        });
    }
}

//弹出
function ErroAlert(e) {
    var index = layer.alert(e, {
        icon: 5,
        time: 2000,
        offset: 't',
        closeBtn: 0,
        title: '错误信息',
        btn: [],
        anim: 2,
        shade: 0
    });
    layer.style(index, {
        color: '#777'
    });
}

//Ajax 错误返回处理
function AjaxErro(e) {
    window.top.layer.alert('请求出现未知错误！', {
        title: '错误消息',
        icon: 2,
    })
}

function timeOut() {
    window.top.layer.alert('系统超时，请重新登陆！', {
        title: '提示消息',
        icon: 5,
    })
}

//Ajax 异常处理
function AjaxException(e) {
    window.top.layer.alert("出现异常情况：" + e, {
        title: '异常消息',
        icon: 0,
    });
}

//生成验证码
var code = "";

function createCode(e) {
    code = "";
    var codeLength = 4;
    var selectChar = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'k', 'l', 'm', 'n', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'J', 'K', 'L', 'M', 'N', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z');
    for (var i = 0; i < codeLength; i++) {
        var charIndex = Math.floor(Math.random() * 60);
        code += selectChar[charIndex];
    }
    if (code.length != codeLength) {
        createCode(e);
    }
    if (canGetCookie == 1) {
        setCookie(e, code, 60 * 60 * 60, '/');
    } else {
        return code;
    }
}


//hours为空字符串时,cookie的生存期至浏览器会话结束。
//hours为数字0时,建立的是一个失效的cookie,
//这个cookie会覆盖已经建立过的同名、同path的cookie（如果这个cookie存在）。
function setCookie(name, value, hours, path) {
    var name = escape(name);
    var value = escape(value);
    var expires = new Date();
    expires.setTime(expires.getTime() + hours * 3600000);
    path = path == "" ? "" : ";path=" + path;
    _expires = (typeof hours) == "string" ? "" : ";expires=" + expires.toUTCString();
    document.cookie = name + "=" + value + _expires + path;
}

//cookie名获取值
function getCookieValue(name) {
    var name = escape(name);
    //读cookie属性，这将返回文档的所有cookie
    var allcookies = document.cookie;
    //查找名为name的cookie的开始位置
    name += "=";
    var pos = allcookies.indexOf(name);
    //如果找到了具有该名字的cookie，那么提取并使用它的值
    if (pos != -1) {    //如果pos值为-1则说明搜索"version="失败
        var start = pos + name.length;   //cookie值开始的位置
        var end = allcookies.indexOf(";", start); //从cookie值开始的位置起搜索第一个";"的位置,即cookie值结尾的位置
        if (end == -1) end = allcookies.length; //如果end值为-1说明cookie列表里只有一个cookie
        var value = allcookies.substring(start, end);  //提取cookie的值
        return unescape(value);       //对它解码
    }
    else return "-1";    //搜索失败，返回-1
}


//滚动条高度
function setiWheelStepH(height) {
    if (!isEmpty(height)) {
        $('.dtreehight').css('height', height);
    } else {
        /**
         * 滚动条高度
         * @type {jQuery}
         */
        var mineheight = $(window).height();
        $('.dtreehight').css('margin-top', "10px");
        $('.dtreehight').css('padding', "5px");
        $('.dtreehight').css('height', mineheight - mineheight / 5);
    }
    $(".dtreehight").panel({iWheelStep: 32});
}


// 格式化json
var formatJson = function (json, options) {
    var reg = null,
        formatted = '',
        pad = 0,
        PADDING = '    '; // one can also use '\t' or a different number of spaces
    // optional settings
    options = options || {};
    // remove newline where '{' or '[' follows ':'
    options.newlineAfterColonIfBeforeBraceOrBracket = (options.newlineAfterColonIfBeforeBraceOrBracket === true) ? true : false;
    // use a space after a colon
    options.spaceAfterColon = (options.spaceAfterColon === false) ? false : true;

    // begin formatting...

    // make sure we start with the JSON as a string
    if (typeof json !== 'string') {
        json = JSON.stringify(json);
    }
    // parse and stringify in order to remove extra whitespace
  /*  json = JSON.parse(json);
    json = JSON.stringify(json);*/

    // add newline before and after curly braces
    reg = /([\{\}])/g;
    json = json.replace(reg, '\r\n$1\r\n');

    // add newline before and after square brackets
    reg = /([\[\]])/g;
    json = json.replace(reg, '\r\n$1\r\n');

    // add newline after comma
    reg = /(\,)/g;
    json = json.replace(reg, '$1\r\n');

    // remove multiple newlines
    reg = /(\r\n\r\n)/g;
    json = json.replace(reg, '\r\n');

    // remove newlines before commas
    reg = /\r\n\,/g;
    json = json.replace(reg, ',');

    // optional formatting...
    if (!options.newlineAfterColonIfBeforeBraceOrBracket) {
        reg = /\:\r\n\{/g;
        json = json.replace(reg, ':{');
        reg = /\:\r\n\[/g;
        json = json.replace(reg, ':[');
    }
    if (options.spaceAfterColon) {
        reg = /\:/g;
        json = json.replace(reg, ': ');
    }

    $.each(json.split('\r\n'), function (index, node) {
        var i = 0,
            indent = 0,
            padding = '';

        if (node.match(/\{$/) || node.match(/\[$/)) {
            indent = 1;
        } else if (node.match(/\}/) || node.match(/\]/)) {
            if (pad !== 0) {
                pad -= 1;
            }
        } else {
            indent = 0;
        }

        for (i = 0; i < pad; i++) {
            padding += PADDING;
        }
        formatted += padding + node + '\r\n';
        pad += indent;
    });
    return formatted;
};

// 获取年龄
function getAge(strBirthday) {
    var returnAge;
    var strBirthdayArr = strBirthday.split("-");
    var birthYear = strBirthdayArr[0];
    var birthMonth = strBirthdayArr[1];
    var birthDay = strBirthdayArr[2];

    d = new Date();
    var nowYear = d.getFullYear();
    var nowMonth = d.getMonth() + 1;
    var nowDay = d.getDate();

    if (nowYear == birthYear) {
        returnAge = 0;//同年 则为0岁
    }
    else {
        var ageDiff = nowYear - birthYear; //年之差
        if (ageDiff > 0) {
            if (nowMonth == birthMonth) {
                var dayDiff = nowDay - birthDay;//日之差
                if (dayDiff < 0) {
                    returnAge = ageDiff - 1;
                }
                else {
                    returnAge = ageDiff;
                }
            }
            else {
                var monthDiff = nowMonth - birthMonth;//月之差
                if (monthDiff < 0) {
                    returnAge = ageDiff - 1;
                }
                else {
                    returnAge = ageDiff;
                }
            }
        }
        else {
            returnAge = -1;//返回-1 表示出生日期输入错误 晚于今天
        }
    }

    return returnAge;//返回周岁年龄

}

/**
 * 通过身份证获取出生日期及性别
 * @param idCard 15/18位身份证号码
 * @return JSON对象
 *         sex：0-女、1-男；
 *         birthDay：yyyy-MM-dd
 */
function getBirthdayAndSexAndAge(idCard) {
    var info = {};
    var birth = (idCard.length === 18) ? idCard.slice(6, 14) : idCard.slice(6, 12);
    // 18位：提取第17位数字；15位：提取最后一位数字
    var order = (idCard.length == 18) ? idCard.slice(-2, -1) : idCard.slice(-1);
    info.birthDay = (idCard.length === 18) ? ([birth.slice(0, 4),
        birth.slice(4, 6), birth.slice(-2)
    ]).join('-') : ([
        '19' + birth.slice(0, 2), birth.slice(2, 4),
        birth.slice(-2)
    ]).join('-');
    // 余数为0代表女性，不为0代表男性
    info.sexId = (order % 2 === 0 ? 2 : 1);
    info.sexName = (info.sexId === 2 ? "女性" : "男性");
    info.age = this.getAge(info.birthDay);
    return info;
}

/*验证身份证是否合法
 */
function validateIdCard(idCard) {
    //15位和18位身份证号码的正则表达式
    var regIdCard = /^(^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$)|(^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])((\d{4})|\d{3}[Xx])$)$/;
    //如果通过该验证，说明身份证格式正确，但准确性还需计算
    if (regIdCard.test(idCard)) {
        if (idCard.length == 18) {
            var idCardWi = new Array(7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2); //将前17位加权因子保存在数组里
            var idCardY = new Array(1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2); //这是除以11后，可能产生的11位余数、验证码，也保存成数组
            var idCardWiSum = 0; //用来保存前17位各自乖以加权因子后的总和
            for (var i = 0; i < 17; i++) {
                idCardWiSum += idCard.substring(i, i + 1) * idCardWi[i];
            }
            var idCardMod = idCardWiSum % 11;//计算出校验码所在数组的位置
            var idCardLast = idCard.substring(17);//得到最后一位身份证号码
            //如果等于2，则说明校验码是10，身份证号码最后一位应该是X
            if (idCardMod == 2) {
                if (idCardLast == "X" || idCardLast == "x") {
                    return true;
                    //alert("恭喜通过验证啦！");
                } else {
                    return false;
                    //alert("身份证号码错误！");
                }
            } else {
                //用计算出的验证码与最后一位身份证号码匹配，如果一致，说明通过，否则是无效的身份证号码
                if (idCardLast == idCardY[idCardMod]) {
                    //alert("恭喜通过验证啦！");
                    return true;
                } else {
                    return false;
                    //alert("身份证号码错误！");
                }
            }
        }
    } else {
        //alert("身份证格式不正确!");
        return false;
    }
}

/** 多选操作*/
var formAction = {
    /**
     * @Author: Mr.Yan
     * @date: 2019/2/12
     * @Description: 多选框互斥事件 + 是否显示 多个 id 渲染 ;p_name ：多选框的 name 命名;name 必须和 lay-filter命名一致
     *                  自定义属性 exclusion ： 互斥选项 ;为 -1  与其他都 互斥 ， 从1开始 （没有0）
     *                  两者属性可以不写则
     */
    exclusion: function (p_name, callBack) {
        layui.use(['form'], function () {
            var form = layui.form;
            form.on('checkbox(' + p_name + ')', function (data) {
                var _elem = data.elem; // 得到checkbox原始DOM对象
                var _value = data.value; // 得到checkbox原始DOM对象
                var _checked = data.elem.checked; // 是否选中
                var _exclusion_val = _elem.getAttribute("exclusion"); // 获取互斥的选项 / null则不存在互斥，从1开始
                var _obj = document.getElementsByName(p_name);  // 获取多选的对象值
                // 如果选中， 则获取互斥的对象去掉对勾
                if (_checked) {
                    //  判断是否存在互斥 存在则进行下面
                    if (!isEmpty(_exclusion_val)) {
                        // 判断是否是-1，-1 代表 与其他全部互斥
                        if (_exclusion_val == "-1") {
                            for (var i = 0; i < _obj.length; i++) {
                                if (_obj[i].value != _value) {
                                    _obj[i].checked = false;
                                }
                            }
                        } else {
                            _exclusion_val = _exclusion_val.split(",");
                            for (var i = 0; i < _exclusion_val.length; i++) {
                                _obj[_exclusion_val[i] - 1].checked = false;
                            }
                        }
                    }
                }
                if (typeof(eval(callBack)) == "function")
                    callBack(data);
                renderForm();
            })
        })
    },
    /**
     * @Author: Mr.Yan
     * @date: 2019/2/13
     * @Description: 获取多选选中值
     */
    getCheckboxData: function (p_name) {
        var arr = [];
        $("input[name='" + p_name + "']:checked").each(function (i) {
            arr[i] = {"inputValue": $(this).val(), "boxLabel": $(this).attr("title")};
        });
        return arr;
    },
    /**
     * @author : Mr.Yan
     * @create : 2019/5/28
     * @description : 设置多选选中
     */
    setCheckboxData: function (p_name, p_value) {
        var _obj = document.getElementsByName(p_name);  // 获取多选的对象值
        var _valueArr = p_value.split(","); // 截取所设置选中值
        /** 选中*/
        for (var i = 0; i < _obj.length; i++) {
            for (var j = 0; j < _valueArr.length; j++) {
                if (_obj[i].value == _valueArr[j]) {
                    _obj[i].checked = true;
                }
            }
        }
        renderForm();

    },
    /**
     * @author : Mr.Yan
     * @create : 2019/5/22
     * @description : 获取单选的值
     */
    getRadioData: function (p_name) {
        var arr = [];
        $("input[name='" + p_name + "']:checked").each(function (i) {
            arr[i] = {"inputValue": $(this).val(), "boxLabel": $(this).attr("title")};
        });
        if (arr.length == 0) {
            return [{"inputValue": "", "boxLabel": ""}];
        }
        return arr[0];
    },
    /**
     * @author : Mr.Yan
     * @create : 2019/5/28
     * @description : 设置单选选中值
     */
    setRadioData: function (p_name, p_value) {
        var _obj = document.getElementsByName(p_name);  // 获取多选的对象值
        for (var i = 0; i < _obj.length; i++) {
            if (_obj[i].value == p_value) {
                _obj[i].checked = true;
            }
        }
        renderForm();
    },
    /**
     * @author : Mr.Yan
     * @create : 2019/5/22
     * @description : 获取下拉选中值
     */
    getSelectData: function (p_name) {
        return {
            "inputValue": $("select[name='" + p_name + "'] option:selected").val(),
            "boxLabel": $("select[name='" + p_name + "'] option:selected").text()
        };
    },
    /**
     * @author : Mr.Yan
     * @create : 2019/5/28
     * @description : 设置下拉选中值
     */
    setSelectData: function (p_name, p_value) {
        $("select[name='" + p_name + "']").val(p_value);  // 获取多选的对象值
        renderForm();
    },

    /**
     * @Author : Mr.Yan
     * @create : 2019/7/25
     * @description : 移除单选选中
     */
    radioRemoveChecked: function (p_name) {
        $("input[type='radio'][name='" + p_name + "']").prop('checked', false);
        renderForm();
    },
    /**
     * @Author : Mr.Yan
     * @create : 2019/7/25
     * @description : 移除多选选中
     */
    checkboxRemoveChecked: function (p_name) {
        $("input[type='checkbox'][name='" + p_name + "']").prop('checked', false);
        renderForm();
    },
    /**
     * @Author : Mr.Yan
     * @create : 2019/7/25
     * @description : 移除文本值
     */
    inputRemoveValue: function (p_name) {
        $("input[name='" + p_name + "']").val('');
        renderForm();
    },
    /**
     * @Author : Mr.Yan
     * @create : 2019/7/25
     * @description : 移除文本域值
     */
    textareaRemoveValue: function (p_name) {
        $("textarea[name='" + p_name + "']").val('');
        renderForm();
    },
    /**
     * @Author : Mr.Yan
     * @create : 2019/7/29
     * @description : 全选 / 非全选
     */
    swapCheckbox: function (p_name, isCheckAll) {
        // true 全选
        if (isCheckAll) {
            $("input[type='checkbox'][name='" + p_name + "']").each(function () {
                this.checked = true;
            });
        } else {
            $("input[type='checkbox'][name='" + p_name + "']").each(function () {
                this.checked = false;
            });
        }
        renderForm();
    }

}


/**
 * 计算可用高度
 */

var calculationHight = function () {
    var H_window = $(window).height() - 50;//计算页面高度

    var H_height = H_window - $("#H_top_tb1").height() - 30;
    if ($("#H_top_tb2").is(":visible")) {
        H_height = H_height - $("#H_top_tb2").height()
    }
    return H_height;
}

/** 关闭提示*/
var closeThisDialog = function () {

    layTool.showConfirm("您确定取消吗？", function (index) {
        layTool.closeLayer(index);
        layTool.close();
    })

};

// 判断是否为空
function isEmpty(str) {
    if (str == null || str == '' || str == undefined) {
        return true;
    } else {
        return false;
    }
}

// 判断不为空
function isNotEmpty(str) {
    if (str == null || str == '' || str == undefined) {
        return false;
    } else {
        return true;
    }
}

// 字符串转日期
var parseDate = function (str) {
    return new Date(Date.parse(str.replace(/-/g, "/")));
};

/** 自定义验证*/
layui.use(['form'], function () {
    var form = layui.form;
    /** 验证ageFist 和 ageEnd 做比较，前者应小于后者*/
    /** 失去焦点事件*/
    form.verify({
        /** 验证年龄范围*/
        ageFirst: function (value, item) {
            var ageFirst = $("#ageFirst").val().trim();
            var ageEnd = $("#ageEnd").val().trim();
            if (isNotEmpty(ageFirst)) {
                if (!ageFirst || isNaN(ageFirst))
                    return "年龄范围只能输入正整数";
                if (isNotEmpty(ageEnd)) {
                    if (Number(ageFirst) > Number(ageEnd))
                        return "年龄范围前者不能大于后者";
                }
            }
        },
        ageEnd: function (value, item) {
            var ageFirst = $("#ageFirst").val().trim();
            var ageEnd = $("#ageEnd").val().trim();
            if (isNotEmpty(ageEnd)) {
                if (!ageEnd || isNaN(ageEnd))
                    return "年龄范围只能输入正整数";
                if (isNotEmpty(ageEnd)) {
                    if (Number(ageFirst) > Number(ageEnd))
                        return "年龄范围后者不能小于前者";
                }
            }
        },
        createTimeFirst: function (value, item) {
            var createTimeFirst = $("#createTimeFirst").val().trim();
            var createTimeEnd = $("#createTimeEnd").val().trim();
            if (isNotEmpty(createTimeFirst) && isNotEmpty(createTimeEnd)) {
                if (parseDate(createTimeFirst) > parseDate(createTimeEnd))
                    return "日期范围前者不能大于后者";
            }
        },
        examinDateFirst: function (value, item) {
            var examinDateFirst = $("#examinDateFirst").val().trim();
            var examinDateEnd = $("#examinDateEnd").val().trim();
            if (isNotEmpty(examinDateFirst) && isNotEmpty(examinDateEnd)) {
                if (parseDate(examinDateFirst) > parseDate(examinDateEnd))
                    return "最近体检日期范围前者不能大于后者";
            }
        },
        nextExaminDateFirst: function (value, item) {
            var nextExaminDateFirst = $("#nextExaminDateFirst").val().trim();
            var nextExaminDateEnd = $("#nextExaminDateEnd").val().trim();
            if (isNotEmpty(nextExaminDateFirst) && isNotEmpty(nextExaminDateEnd)) {
                if (parseDate(nextExaminDateFirst) > parseDate(nextExaminDateEnd))
                    return "下次体检日期范围前者不能大于后者";
            }
        },
        /** 绑定户主验证*/
        bindHouserHolder: function (value, item) {
            if (isEmpty(value)) {
                return "请先绑定户主档案";
            }
        }
    })
});

/**引用外部js**/
function loadScript(url, callback) {

    var script = document.createElement("script");

    script.type = "text/javascript";

    if (typeof(callback) != "undefined") {

        if (script.readyState) {

            script.onreadystatechange = function () {

                if (script.readyState == "loaded" || script.readyState == "complete") {

                    script.onreadystatechange = null;

                    callback();

                }

            };

        } else {

            script.onload = function () {
                if (callback != null) {
                    callback();
                }


            };

        }

    }
    ;
    script.src = url;
    document.body.appendChild(script);

}

/** 创建时间线 */
var craeateTimeLine = {
    /** arr 必须是数组,必须包含title和message，eg : [title:'2019',message:'年收入百万']*/
    craeateTime: function (arr) {
        // 定义时间轴ul li 中所用到的class 属性
        let ulClass = "layui-timeline";
        // 创建时间轴 ul
        let statusUl = document.createElement("ul");
        statusUl.setAttribute("class", ulClass);
        // 验证是否是数组
        if (!(arr instanceof Array)) {
            layTool.showAlert("时间线对应参数有误!</br>必须是数组,必须包含title和message;</br> eg : [title:'2019',message:'年收入百万'];");
            return false;
        }
        for (let i = 0; i < arr.length; i++) {
            // li 添加到 ul中
            statusUl.appendChild(this.createTimeLineItem(arr[i].title, arr[i].message));
        }
        statusUl.appendChild(this.createTimeLineItem("无更多记录!", ""));
        return statusUl;
    },

    /** 创建时间线Li*/
    createTimeLineItem: function (title, message) {
        let ul_liClass = "layui-timeline-item", ul_li_iClass = "layui-icon layui-timeline-axis",
            ul_li_divClass = "layui-timeline-content layui-text", ul_li_div_h3Class = "layui-timeline-title";

        // 创建时间轴 li
        let statusUl_li = document.createElement("li");
        statusUl_li.setAttribute("class", ul_liClass);
        // 创建时间轴 li 内部元素 i div h3 p
        let statusUl_li_i = document.createElement("i");
        statusUl_li_i.setAttribute("class", ul_li_iClass);
        statusUl_li_i.innerHTML = "";

        let statusUl_li_div = document.createElement("div");
        statusUl_li_div.setAttribute("class", ul_li_divClass);

        let statusUl_li__div_h3 = document.createElement("h3");
        statusUl_li__div_h3.setAttribute("class", ul_li_div_h3Class);
        statusUl_li__div_h3.innerHTML = "<span style=\"color: #0b6ee6;\">" + title + "</span>";

        let statusUl_li__div_p = document.createElement("p");
        statusUl_li__div_p.innerHTML = message;

        statusUl_li_div.appendChild(statusUl_li__div_h3);
        statusUl_li_div.appendChild(statusUl_li__div_p);

        statusUl_li.appendChild(statusUl_li_i);
        statusUl_li.appendChild(statusUl_li_div);
        return statusUl_li;
    }

};

/**
 *
 * @param num
 * @returns {string}
 * @constructor 几天后的日期
 */
function AddDays(num) {
    var newdate = new Date();
    var newtimems = newdate.getTime() + (num * 24 * 60 * 60 * 1000);
    newdate.setTime(newtimems);
    var seperator1 = "-";
    var year = newdate.getFullYear();
    var month = newdate.getMonth() + 1;
    var dates = newdate.getDate();
    if (month >= 1 && month <= 9) {
        month = "0" + month;
    }
    if (dates >= 1 && dates <= 9) {
        dates = "0" + dates;
    }
    var currentdate = year + seperator1 + month + seperator1 + dates;
    return currentdate;
}
/**
 * @author : Mr.Yan
 * @create : 2019/5/6
 * @description : 退出系统提示操作
 */
function logout() {
    /** 提示确定要退出系统吗？*/
    layTool.showConfirm("您确定要退出系统吗？",function (layer) {
        window.location.href = PREFIX_LOGIN ;
    })
}
